package br.com.android.pubclub.dados;

import java.util.ArrayList;
import java.util.List;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import br.com.android.pubclub.R;
import br.com.android.pubclub.basicas.Amizade;
import br.com.android.pubclub.basicas.Cidade;
import br.com.android.pubclub.basicas.Cliente;
import br.com.android.pubclub.basicas.Estabelecimento;
import br.com.android.pubclub.basicas.NotaEstabelecimento;
import br.com.android.pubclub.basicas.Promocao;
import br.com.android.pubclub.basicas.Token;
import br.com.android.pubclub.basicas.UF;
import br.com.android.pubclub.negocios.ArmazenarInfoUser;
import br.com.android.pubclub.negocios.Validacoes;
import br.com.android.pubclub.web.AlterarCliente;
import br.com.android.pubclub.web.AlterarSenhaCliente;
import br.com.android.pubclub.web.Amigos;
import br.com.android.pubclub.web.AvaliarEstabelecimento;
import br.com.android.pubclub.web.Login;
import br.com.android.pubclub.web.SolicitacoesPendentes;
import br.com.android.pubclub.web.SolicitacoesPendentesEnviadas;

public class WsServicos extends Activity implements Runnable, ArmazenarInfoUser {

	ProgressDialog dialog;
	String parametro, login, senha;
	// Lista das cidades
	List<String> listcidade = new ArrayList<String>();
	Cliente cli = new Cliente();

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.fundo_branco);

		dialog = ProgressDialog.show(this, "", "Carregando...", true);

		new Thread(this).start();
	}

	// Metodo da classe Runnable, execulta ao iniciar a classe.
	public void run() {

		// Weslley Nepomcueno - 20140508 - Criação do metodo inserir avaliação
		// do estabelecimento
		if (getIntent().getStringExtra("parametro").equals("salvarMinhaNota")) {

			String meuid = getIntent().getStringExtra("meu_id");
			String estid = getIntent().getStringExtra("id_est");
			String minhanota = getIntent().getStringExtra("minhaNota");
			String comentario = getIntent().getStringExtra("coment");

			Intent it = new Intent(this, Validacoes.class);
			it.putExtra("parametro", "msgAvalairEstabelecimento");
			it.putExtra("avaliarEst",
					avaliarEstabelecimento(meuid, estid, minhanota, comentario));
			startActivity(it);

			finish();

		}

		// Weslley Nepomuceno - 20140507 - Gerar Token
		if (getIntent().getStringExtra("parametro").equals(
				"listaEstabelecimento")) {

			Estabelecimento est = (Estabelecimento) getIntent()
					.getSerializableExtra("estabelecimento");

			try {

				Intent it = new Intent(this, Validacoes.class);

				it.putExtra("parametro", "exibirToken");

				ArrayList<Token> objToken = new ArrayList<Token>();

				objToken.addAll(gerarToken(est));

				for (Token token : objToken) {

					it.putExtra("numToken", token.getNumToken());
					it.putExtra("staToken", token.getStatus());
					it.putExtra("msgToken", token.getMsg());

				}

				startActivity(it);

				finish();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}

		// Weslley Nepomuceno - 20140705 - Avaliar Estabelecimento
		if (getIntent().getStringExtra("parametro").equals(
				"listaEstabelecimentoAvaliar")) {

			Estabelecimento est = (Estabelecimento) getIntent()
					.getSerializableExtra("estabelecimento");

			try {

				ArrayList<NotaEstabelecimento> objAvaliarEstabelecimento = new ArrayList<NotaEstabelecimento>();

				objAvaliarEstabelecimento.addAll(verificarAvaliacao(est));

				if (!(objAvaliarEstabelecimento.isEmpty())) {

					Intent it = new Intent(this, AvaliarEstabelecimento.class);

					for (NotaEstabelecimento avalest : objAvaliarEstabelecimento) {

						it.putExtra("id", avalest.getId());
						it.putExtra("idcli", avalest.getCli());
						it.putExtra("nota", avalest.getNota());
						it.putExtra("comentario", avalest.getComentarios());

					}

					it.putExtra("parametro", "avaliarEstabelecimentoPreenchido");
					it.putExtra("idEst", est.id_est);
					it.putExtra("nome", est.nome);
					it.putExtra("telefone", est.telefone);
					it.putExtra("latitude", est.latitude);
					it.putExtra("longitude", est.longitude);

					startActivity(it);
					finish();

				} else {
					Intent it = new Intent(this, AvaliarEstabelecimento.class);

					it.putExtra("parametro", "avaliarEstabelecimento");
					it.putExtra("idEst", est.id_est);
					it.putExtra("nome", est.nome);
					it.putExtra("telefone", est.telefone);
					it.putExtra("latitude", est.latitude);
					it.putExtra("longitude", est.longitude);

					startActivity(it);
					finish();
				}

			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();

				Intent it = new Intent(this, AvaliarEstabelecimento.class);

				it.putExtra("parametro", "avaliarEstabelecimento");
				it.putExtra("idEst", est.id_est);
				it.putExtra("nome", est.nome);
				it.putExtra("telefone", est.telefone);
				it.putExtra("latitude", est.latitude);
				it.putExtra("longitude", est.longitude);

				startActivity(it);
				finish();

			}

		}

		// Realizar Login
		if (getIntent().getStringExtra("parametro").equals("realizarLogin")) {
			this.login = getIntent().getStringExtra("login");
			this.senha = getIntent().getStringExtra("senha");

			Intent it = new Intent(this, Validacoes.class);
			it.putExtra("parametro", "msgLoginSenhaIncorreto");

			it.putExtra("realizarLogin", realizarLogin(this.login, this.senha));

			it.putExtra("solicitacoesPendentes",
					getAmizades(Amigos.SOLICITACOES_PENDENTES_RECEBIDAS));

			startActivity(it);

			finish();

		}

		// Cadastrar Cliente
		if (getIntent().getStringExtra("parametro").equals("cadastarCliente")) {
			cli.setNome(getIntent().getStringExtra("nome"));
			cli.setCpf(getIntent().getStringExtra("cpf"));
			cli.setEmail(getIntent().getStringExtra("email"));
			cli.setSenha(getIntent().getStringExtra("senha"));
			String senha2 = getIntent().getStringExtra("senha2");
			cli.setSexo(getIntent().getBooleanExtra("sexo", true));
			cli.setNasc(getIntent().getStringExtra("nasc"));
			cli.setCep(getIntent().getStringExtra("cep"));
			cli.setNumero(getIntent().getStringExtra("numero"));
			cli.setBairro(getIntent().getStringExtra("bairro"));
			cli.setCidade(getIntent().getStringExtra("cidade"));
			cli.setComplemento(getIntent().getStringExtra("complemento"));
			cli.setRua(getIntent().getStringExtra("rua"));

			Intent it = new Intent(this, Validacoes.class);
			it.putExtra("parametro", "msgCadastroCliente");
			it.putExtra("cadastarCliente", cadastarCliente());
			startActivity(it);

			finish();

		}

		// Remover Cliente
		if (getIntent().getStringExtra("parametro").equals("desativarCliente")) {

			cli.setId_cliente(getIntent().getStringExtra("meu_id"));
			Intent it = new Intent(this, Validacoes.class);
			it.putExtra("parametro", "msgRemoverCliente");
			it.putExtra("removerCliente", removerCliente());
			startActivity(it);

			finish();

		}

		// Pegar Nome Cliente Menu
		if (getIntent().getStringExtra("parametro").equals("pegarClienteNome")) {

			cli.setId_cliente(getIntent().getStringExtra("meu_id"));

			pegarCliente();

			finish();

		}

		// Pegar Cliente Alterar Cliente
		if (getIntent().getStringExtra("parametro").equals("pegarCliente")) {

			cli.setId_cliente(getIntent().getStringExtra("meu_id"));

			pegarCliente();

			Intent it = new Intent(this, AlterarCliente.class);
			it.putExtra("parametro", "carregar");
			it.putExtra("id_cli", cli.getId_cliente());
			it.putExtra("nome", cli.getNome());
			it.putExtra("cpf", cli.getCpf());
			it.putExtra("email", cli.getEmail());
			it.putExtra("senha", cli.getSenha());
			it.putExtra("sexo", cli.isSexo());
			it.putExtra("nasc", cli.getNasc());
			it.putExtra("cep", cli.getCep());
			it.putExtra("numero", cli.getNumero());
			it.putExtra("bairro", cli.getBairro());
			it.putExtra("cidade", cli.getCidade());
			it.putExtra("complemento", cli.getComplemento());
			it.putExtra("rua", cli.getRua());
			startActivity(it);

			finish();

		}

		// Pegar Cliente Alterar Senha
		if (getIntent().getStringExtra("parametro").equals("pegarClienteSenha")) {

			cli.setId_cliente(getIntent().getStringExtra("meu_id"));

			pegarCliente();

			Intent it = new Intent(this, AlterarSenhaCliente.class);
			it.putExtra("parametro", "carregar");
			it.putExtra("id_cli", cli.getId_cliente());
			it.putExtra("nome", cli.getNome());
			it.putExtra("cpf", cli.getCpf());
			it.putExtra("email", cli.getEmail());
			it.putExtra("senha", cli.getSenha());
			it.putExtra("sexo", cli.isSexo());
			it.putExtra("nasc", cli.getNasc());
			it.putExtra("cep", cli.getCep());
			it.putExtra("numero", cli.getNumero());
			it.putExtra("bairro", cli.getBairro());
			it.putExtra("cidade", cli.getCidade());
			it.putExtra("complemento", cli.getComplemento());
			it.putExtra("rua", cli.getRua());
			startActivity(it);

			finish();

		}

		// Editar Cliente
		if (getIntent().getStringExtra("parametro").equals("editarCliente")) {

			cli.setId_cliente(getIntent().getStringExtra("meu_id"));
			cli.setNome(getIntent().getStringExtra("nome"));
			cli.setCpf(getIntent().getStringExtra("cpf"));
			cli.setEmail(getIntent().getStringExtra("email"));
			cli.setSenha(getIntent().getStringExtra("senha"));
			cli.setSexo(getIntent().getBooleanExtra("sexo", true));
			cli.setNasc(getIntent().getStringExtra("nasc"));
			cli.setCep(getIntent().getStringExtra("cep"));
			cli.setNumero(getIntent().getStringExtra("numero"));
			cli.setBairro(getIntent().getStringExtra("bairro"));
			cli.setCidade(getIntent().getStringExtra("cidade"));
			cli.setComplemento(getIntent().getStringExtra("complemento"));
			cli.setRua(getIntent().getStringExtra("rua"));

			Intent it = new Intent(this, Validacoes.class);
			it.putExtra("parametro", "msgEditarCliente");
			it.putExtra("editarCliente", editarCliente());

			startActivity(it);

			finish();

		}

		// Editar Senha Cliente
		if (getIntent().getStringExtra("parametro")
				.equals("editarSenhaCliente")) {

			cli.setId_cliente(getIntent().getStringExtra("meu_id"));
			cli.setNome(getIntent().getStringExtra("nome"));
			cli.setCpf(getIntent().getStringExtra("cpf"));
			cli.setEmail(getIntent().getStringExtra("email"));
			cli.setSenha(getIntent().getStringExtra("senha"));
			cli.setSenhaAtual(getIntent().getStringExtra("senhaAtual"));
			cli.setSexo(getIntent().getBooleanExtra("sexo", true));
			cli.setNasc(getIntent().getStringExtra("nasc"));
			cli.setCep(getIntent().getStringExtra("cep"));
			cli.setNumero(getIntent().getStringExtra("numero"));
			cli.setBairro(getIntent().getStringExtra("bairro"));
			cli.setCidade(getIntent().getStringExtra("cidade"));
			cli.setComplemento(getIntent().getStringExtra("complemento"));
			cli.setRua(getIntent().getStringExtra("rua"));

			Intent it = new Intent(this, Validacoes.class);
			it.putExtra("parametro", "msgEditarSenhaCliente");
			it.putExtra("editarSenhaCliente", editarSenhaCliente());

			startActivity(it);

			finish();
		}

		if (getIntent().getStringExtra("parametro").equals("listaEst")) {

			finish();

		}

		if (getIntent().getStringExtra("parametro").equals("listarClientes")) {

			Intent it = new Intent(this, Validacoes.class);
			it.putExtra("parametro", "listarClientes");
			it.putExtra("listaDeClientes", listarClientes());
			startActivity(it);

			finish();

		}

		if (getIntent().getStringExtra("parametro").equals("listarPromocoes")) {

			Intent it = new Intent(this, Validacoes.class);
			it.putExtra("parametro", "listarPromocoes");
			it.putExtra("listaDePromocoes", listarPromocoes());
			startActivity(it);

			finish();

		}

		if (getIntent().getStringExtra("parametro").equals(
				"verSolicitacoesPendentes")) {

			Intent it = new Intent(this, SolicitacoesPendentes.class);
			it.putExtra("parametro", "verSolicitacoesPendentes");
			it.putExtra("listaDeAmizades",
					getAmizades(Amigos.SOLICITACOES_PENDENTES_RECEBIDAS));
			startActivity(it);

			finish();

		}

		if (getIntent().getStringExtra("parametro").equals(
				"verSolicitacoesEnviadasPendentes")) {

			Intent it = new Intent(this, SolicitacoesPendentesEnviadas.class);
			it.putExtra("parametro", "verSolicitacoesEnviadasPendentes");
			it.putExtra("listaDeAmizades",
					getAmizades(Amigos.SOLICITACOES_PENDENTES_ENVIADAS));
			startActivity(it);

			finish();

		}

		if (getIntent().getStringExtra("parametro").equals("verAmigos")) {

			Intent it = new Intent(this, Amigos.class);
			it.putExtra("parametro", "verAmigos");
			it.putExtra("listaDeAmizades", getAmizades(Amigos.AMIGOS));
			startActivity(it);

			finish();

		}
		
		
	}

	private ArrayList<Token> gerarToken(Estabelecimento est) throws Exception {

		ArrayList<Token> objToken = new ArrayList<Token>();

		// Objeto composto pelo NameSpace e pelo mÐ¹todo que queremos chamar
		SoapObject soap = new SoapObject("http://www.outsystems.com",
				"GerarToken");

		// Requisiзгo do web service, solicitaзгo do login e senha
		soap.addProperty("ClienteId", meuID[0]);
		soap.addProperty("EstabelecimentoId", est.id_est);

		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);

		envelope.dotNet = true;
		envelope.implicitTypes = true;
		envelope.setOutputSoapObject(soap);

		String url = "http://flplucio.outsystemscloud.com/PubClubCore/PubClub_Token_WS.asmx";

		HttpTransportSE httpTransport = new HttpTransportSE(url);

		try {

			httpTransport.call(
					"http://PubClubCore/PubClub_Token_WS/GerarToken", envelope);

			Object msg = envelope.getResponse();
			String resultado = msg.toString();// .replace(
			// "ObjetoRetornoToken=anyType", "ObjetoRetornoToken;anyType");
			Log.d("Resultado", resultado);

			String[] resultLista = resultado.split("anyType");
			for (int vI = 1; vI < resultLista.length; vI++) {
				String[] objetoRetornoToken = resultLista[vI].split(";");

				// String id_estabelecimento = objetoRetornoToken[1]
				// .substring(objetoRetornoToken[1].indexOf("=") + 1);

				Token tokenList = new Token(
						objetoRetornoToken[0].substring(objetoRetornoToken[0]
								.indexOf("=") + 1),
						objetoRetornoToken[1].substring(objetoRetornoToken[1]
								.indexOf("=") + 1),
						objetoRetornoToken[2].substring(objetoRetornoToken[2]
								.indexOf("=") + 1));

				objToken.add(tokenList);
			}
			return objToken;
		} catch (Exception e) {
			e.getMessage();
			return null;

		}
	}

	private String realizarLogin(String login, String senha) {
		login = this.login;
		senha = this.senha;
		String retorno;

		// Objeto composto pelo NameSpace e pelo mйtodo que queremos chamar
		SoapObject soap = new SoapObject("http://www.outsystems.com", "Login");

		// Requisiзгo do web service, solicitaзгo do login e senha
		soap.addProperty("Login", login);
		soap.addProperty("Senha", senha);

		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);

		envelope.dotNet = true;
		envelope.implicitTypes = true;
		envelope.setOutputSoapObject(soap);

		String url = "http://flplucio.outsystemscloud.com/pubclubcore/Utilizadades_WS.asmx";

		HttpTransportSE httpTransport = new HttpTransportSE(url);

		try {

			httpTransport.call("http://PubClubCore/Utilizadades_WS/Login",
					envelope);

			Object msg = envelope.getResponse();

			System.out.println(msg);

			// Variavel responsavel por armazenar a extenзгo do objeto
			// retornado pelo envelope
			int ext = String.valueOf(msg).length();
			// Contador de marcadores retornado pelo envelope
			int contmarc = 0;
			// Contador que serve como base para execultar a captura de
			// caracter
			// em caracter
			int i = 0;

			String menssagem = "";

			while (i < ext) {
				String caracter = String.valueOf(msg).substring(i, i + 1);

				if (caracter.equals("=")) {
					contmarc++;
				}

				if (contmarc == 2) {

					if (!(caracter.equals("="))) {

						if (caracter.equals(";")) {
							break;
						} else {

							menssagem = menssagem + caracter;
						}

					}

				}

				i++;
			}

			retorno = menssagem;

		} catch (Exception e) {
			retorno = e.getMessage();
		}
		cli.setId_cliente(retorno);
		pegarCliente();
		return retorno;
	}

	private String cadastarCliente() {
		String retorno;
		// Objeto composto pelo NameSpace e pelo mйtodo que queremos chamar
		SoapObject soap = new SoapObject("http://www.outsystems.com",
				"CreateCliente");

		String aaaa = cli.getNasc().substring(6, 10);
		String mm = cli.getNasc().substring(3, 5);
		String dd = cli.getNasc().substring(0, 2);

		cli.setNasc(aaaa + "-" + mm + "-" + dd);

		soap.addProperty("CPF", cli.getCpf());
		soap.addProperty("Nome", cli.getNome());
		soap.addProperty("Email", cli.getEmail());
		soap.addProperty("Senha", cli.getSenha());
		soap.addProperty("Sexo", cli.isSexo());
		soap.addProperty("Nascimento", cli.getNasc());
		soap.addProperty("CEP", cli.getCep());
		soap.addProperty("Rua", cli.getRua());
		soap.addProperty("Numero", cli.getNumero());
		soap.addProperty("Bairro", cli.getBairro());
		soap.addProperty("CidadeId", 5);
		soap.addProperty("Complemento", cli.getComplemento());

		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);

		envelope.dotNet = true;
		envelope.implicitTypes = true;
		envelope.setOutputSoapObject(soap);

		String url = "http://flplucio.outsystemscloud.com/PubClubCore/PubClub_Cliente_WS.asmx";

		HttpTransportSE httpTransport = new HttpTransportSE(url);

		try {

			httpTransport.call(
					"http://PubClubCore/PubClub_Cliente_WS/CreateCliente",
					envelope);

			Object msg = envelope.getResponse();

			System.out.println(msg);

			// Variavel responsavel por armazenar a extenзгo do objeto
			// retornado pelo envelope
			int ext = String.valueOf(msg).length();
			// Contador de marcadores retornado pelo envelope
			int contmarc = 0;
			// Contador que serve como base para execultar a captura de
			// caracter
			// em caracter
			int i = 0;

			String menssagem = "";

			while (i < ext) {
				String caracter = String.valueOf(msg).substring(i, i + 1);

				if (caracter.equals("=")) {
					contmarc++;
				}

				if (contmarc == 2) {

					if (!(caracter.equals("="))) {

						if (caracter.equals(";")) {
							break;
						} else {

							menssagem = menssagem + caracter;
						}

					}

				}

				i++;
			}

			retorno = menssagem;

		} catch (Exception e) {
			retorno = e.getMessage();
		}
		return retorno;
	}

	private String removerCliente() {
		String retorno;

		// Objeto composto pelo NameSpace e pelo mйtodo que queremos chamar
		SoapObject soap = new SoapObject("http://www.outsystems.com",
				"DeleteCliente");

		// Requisiзгo do web service, solicitaзгo do nъmero do CEP
		soap.addProperty("ClienteId", cli.getId_cliente());

		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);

		envelope.dotNet = true;
		envelope.implicitTypes = true;
		envelope.setOutputSoapObject(soap);

		String url = "http://flplucio.outsystemscloud.com/PubClubCore/PubClub_Cliente_WS.asmx";

		HttpTransportSE httpTransport = new HttpTransportSE(url);

		try {

			httpTransport.call(
					"http://PubClubCore/PubClub_Cliente_WS/DeleteCliente",
					envelope);

			Object msg = envelope.getResponse();

			System.out.println(msg);

			// Variavel responsavel por armazenar a extenзгo do objeto
			// retornado pelo envelope
			int ext = String.valueOf(msg).length();
			// Contador de marcadores retornado pelo envelope
			int contmarc = 0;
			// Contador que serve como base para execultar a captura de
			// caracter
			// em caracter
			int i = 0;

			String menssagem = "";

			while (i < ext) {
				String caracter = String.valueOf(msg).substring(i, i + 1);

				if (caracter.equals("=")) {
					contmarc++;
				}

				if (contmarc == 2) {

					if (!(caracter.equals("="))) {

						if (caracter.equals(";")) {
							break;
						} else {

							menssagem = menssagem + caracter;
						}

					}

				}

				i++;
			}

			retorno = menssagem;

		} catch (Exception e) {
			retorno = e.getMessage();
		}
		return retorno;
	}

	private void pegarCliente() {

		// Objeto composto pelo NameSpace e pelo mйtodo que queremos chamar
		SoapObject soap = new SoapObject("http://www.outsystems.com",
				"GetCliente");

		// Requisiзгo do web service, solicitaзгo do nъmero do CEP
		soap.addProperty("ClienteId", cli.getId_cliente());

		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);

		envelope.dotNet = true;
		envelope.implicitTypes = true;
		envelope.setOutputSoapObject(soap);

		String url = "http://flplucio.outsystemscloud.com/PubClubCore/PubClub_Cliente_WS.asmx";

		HttpTransportSE httpTransport = new HttpTransportSE(url);

		try {

			httpTransport.call(
					"http://PubClubCore/PubClub_Cliente_WS/GetCliente",
					envelope);

			Object msg = envelope.getResponse();

			System.out.println(msg);

			// Variavel responsavel por armazenar a extenзгo do objeto
			// retornado pelo envelope
			int ext = String.valueOf(msg).length();
			// Contador de marcadores retornado pelo envelope
			int contmarc = 0;
			int contmarc2 = 0;
			// Contador que serve como base para execultar a captura de
			// caracter
			// em caracter
			int i = 0;

			String sexo = "";

			while (i < ext) {
				String caracter = String.valueOf(msg).substring(i, i + 1);

				if (caracter.equals("=")) {
					contmarc++;
				}

				if (caracter.equals(";")) {
					contmarc2++;
				}

				if ((contmarc == 2) && (contmarc2 == 1)) {

					if (!(caracter.equals("="))) {

						if (caracter.equals(";")) {
							break;
						} else {

							cli.setCpf(cli.getCpf() + caracter);
						}

					}

				}

				if ((contmarc == 3) && (contmarc2 == 2)) {

					if (!(caracter.equals("="))) {

						if (caracter.equals(";")) {
							break;
						} else {

							cli.setNome(cli.getNome() + caracter);
						}

					}

				}

				if ((contmarc == 4) && (contmarc2 == 3)) {

					if (!(caracter.equals("="))) {

						if (caracter.equals(";")) {
							break;
						} else {

							cli.setEmail(cli.getEmail() + caracter);
						}

					}

				}

				if ((contmarc == 5) && (contmarc2 == 4)) {

					if (!(caracter.equals("="))) {

						if (caracter.equals(";")) {
							break;
						} else {

							cli.setSenha(cli.getSenha() + caracter);
						}

					}

				}

				if ((contmarc == 6) && (contmarc2 == 5)) {

					if (!(caracter.equals("="))) {

						if (caracter.equals(";")) {
							break;
						} else {

							sexo = sexo + caracter;
						}

					}

				}

				if ((contmarc == 7) && (contmarc2 == 6)) {

					if (!(caracter.equals("="))) {

						if (caracter.equals(";")) {
							break;
						} else {

							cli.setNasc(cli.getNasc() + caracter);
						}

					}

				}

				if ((contmarc == 8) && (contmarc2 == 7)) {

					if (!(caracter.equals("="))) {

						if (caracter.equals(";")) {
							break;
						} else {

							cli.setCep(cli.getCep() + caracter);
						}

					}

				}

				if ((contmarc == 9) && (contmarc2 == 8)) {

					if (!(caracter.equals("="))) {

						if (caracter.equals(";")) {
							break;
						} else {

							cli.setRua(cli.getRua() + caracter);
						}

					}

				}

				if ((contmarc == 10) && (contmarc2 == 9)) {

					if (!(caracter.equals("="))) {

						if (caracter.equals(";")) {
							break;
						} else {

							cli.setNumero(cli.getNumero() + caracter);
						}

					}

				}

				if ((contmarc == 11) && (contmarc2 == 10)) {

					if (!(caracter.equals("="))) {

						if (caracter.equals(";")) {
							break;
						} else {

							cli.setBairro(cli.getBairro() + caracter);
						}

					}

				}

				if ((contmarc == 12) && (contmarc2 == 11)) {

					if (!(caracter.equals("="))) {

						if (caracter.equals(";")) {
							break;
						} else {

							cli.setCidade(cli.getCidade() + caracter);
						}

					}

				}

				if ((contmarc == 13) && (contmarc2 == 12)) {

					if (!(caracter.equals("="))) {

						if (caracter.equals(";")) {
							break;
						} else {

							cli.setComplemento(cli.getComplemento() + caracter);
						}

					}

				}

				i++;
			}

			nomeUser[0] = cli.getNome();
			cli.setCidade("Recife");

			if (sexo.equalsIgnoreCase("true")) {
				cli.setSexo(true);
			} else {
				cli.setSexo(false);
			}

			Login.clienteLogado = cli;
			System.out.println();

		} catch (Exception e) {
			System.out.println(e);
		}
	}

	private String editarCliente() {
		String retorno;
		// Objeto composto pelo NameSpace e pelo mйtodo que queremos chamar
		SoapObject soap = new SoapObject("http://www.outsystems.com",
				"UpdateCliente");

		String aaaa = cli.getNasc().substring(6, 10);
		String mm = cli.getNasc().substring(3, 5);
		String dd = cli.getNasc().substring(0, 2);

		cli.setNasc(aaaa + "-" + mm + "-" + dd);

		soap.addProperty("ClienteId", cli.getId_cliente());
		soap.addProperty("CPF", cli.getCpf());
		soap.addProperty("Nome", cli.getNome());
		soap.addProperty("Email", cli.getEmail());
		soap.addProperty("SenhaNova", "");
		soap.addProperty("Sexo", cli.isSexo());
		soap.addProperty("Nascimento", cli.getNasc());
		soap.addProperty("CEP", cli.getCep());
		soap.addProperty("Rua", cli.getRua());
		soap.addProperty("Numero", cli.getNumero());
		soap.addProperty("Bairro", cli.getBairro());
		soap.addProperty("CidadeId", 5);
		soap.addProperty("Complemento", cli.getComplemento());
		soap.addProperty("SenhaAntiga", cli.getSenha());

		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);

		envelope.dotNet = true;
		envelope.implicitTypes = true;
		envelope.setOutputSoapObject(soap);

		String url = "http://flplucio.outsystemscloud.com/PubClubCore/PubClub_Cliente_WS.asmx";

		HttpTransportSE httpTransport = new HttpTransportSE(url);

		try {

			httpTransport.call(
					"http://PubClubCore/PubClub_Cliente_WS/UpdateCliente",
					envelope);

			Object msg = envelope.getResponse();

			System.out.println(msg);

			// Variavel responsavel por armazenar a extenзгo do objeto
			// retornado pelo envelope
			int ext = String.valueOf(msg).length();
			// Contador de marcadores retornado pelo envelope
			int contmarc = 0;
			// Contador que serve como base para execultar a captura de
			// caracter
			// em caracter
			int i = 0;

			String menssagem = "";

			while (i < ext) {
				String caracter = String.valueOf(msg).substring(i, i + 1);

				if (caracter.equals("=")) {
					contmarc++;
				}

				if (contmarc == 2) {

					if (!(caracter.equals("="))) {

						if (caracter.equals(";")) {
							break;
						} else {

							menssagem = menssagem + caracter;
						}

					}

				}

				i++;
			}

			retorno = menssagem;

		} catch (Exception e) {
			retorno = e.getMessage();
		}
		return retorno;
	}

	private String editarSenhaCliente() {
		String retorno;
		// Objeto composto pelo NameSpace e pelo mйtodo que queremos chamar
		SoapObject soap = new SoapObject("http://www.outsystems.com",
				"UpdateSenha");

		String aaaa = cli.getNasc().substring(6, 10);
		String mm = cli.getNasc().substring(3, 5);
		String dd = cli.getNasc().substring(0, 2);

		cli.setNasc(aaaa + "-" + mm + "-" + dd);

		soap.addProperty("ClienteId", cli.getId_cliente());
		soap.addProperty("CPF", cli.getCpf());
		soap.addProperty("Nome", cli.getNome());
		soap.addProperty("Email", cli.getEmail());
		soap.addProperty("SenhaNova", cli.getSenha());
		soap.addProperty("Sexo", cli.isSexo());
		soap.addProperty("Nascimento", cli.getNasc());
		soap.addProperty("CEP", cli.getCep());
		soap.addProperty("Rua", cli.getRua());
		soap.addProperty("Numero", cli.getNumero());
		soap.addProperty("Bairro", cli.getBairro());
		soap.addProperty("CidadeId", 5);
		soap.addProperty("Complemento", cli.getComplemento());
		soap.addProperty("SenhaAntiga", cli.getSenhaAtual());

		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);

		envelope.dotNet = true;
		envelope.implicitTypes = true;
		envelope.setOutputSoapObject(soap);

		String url = "http://flplucio.outsystemscloud.com/PubClubCore/PubClub_Cliente_WS.asmx";

		HttpTransportSE httpTransport = new HttpTransportSE(url);

		try {

			httpTransport.call(
					"http://PubClubCore/PubClub_Cliente_WS/UpdateSenha",
					envelope);

			Object msg = envelope.getResponse();

			System.out.println(msg);

			// Variavel responsavel por armazenar a extenзгo do objeto
			// retornado pelo envelope
			int ext = String.valueOf(msg).length();
			// Contador de marcadores retornado pelo envelope
			int contmarc = 0;
			// Contador que serve como base para execultar a captura de
			// caracter
			// em caracter
			int i = 0;

			String menssagem = "";

			while (i < ext) {
				String caracter = String.valueOf(msg).substring(i, i + 1);

				if (caracter.equals("=")) {
					contmarc++;
				}

				if (contmarc == 2) {

					if (!(caracter.equals("="))) {

						if (caracter.equals(";")) {
							break;
						} else {

							menssagem = menssagem + caracter;
						}

					}

				}

				i++;
			}

			retorno = menssagem;

		} catch (Exception e) {
			retorno = e.getMessage();
		}
		return retorno;
	}

	public static ArrayList<Estabelecimento> retrieveListaEstabelecimento()
			throws Exception {

		ArrayList<Estabelecimento> estabelecimentos = new ArrayList<Estabelecimento>();
		// Objeto composto pelo NameSpace e pelo mÐ¹todo que queremos chamar
		SoapObject soap = new SoapObject("http://www.outsystems.com",
				"ListEstabelecimento");

		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);

		envelope.dotNet = true;
		envelope.implicitTypes = true;
		envelope.setOutputSoapObject(soap);

		String url = "http://flplucio.outsystemscloud.com/PubClubCore/PubClub_Estabelecimento_WS.asmx";

		HttpTransportSE httpTransport = new HttpTransportSE(url);

		try {

			httpTransport
					.call("http://PubClubCore/PubClub_Estabelecimento_WS/ListEstabelecimento",
							envelope);

			Object msg = envelope.getResponse();
			String resultado = msg.toString().replace(
					"ObjetoEstabelecimento=anyType",
					"ObjetoEstabelecimento;anyType");
			Log.d("Resultado", resultado);

			String[] resultLista = resultado.split("ObjetoEstabelecimento");
			for (int vI = 1; vI < resultLista.length; vI++) {
				String[] objetoEstabelecimento = resultLista[vI].split(";");
				String id_estabelecimento = objetoEstabelecimento[1]
						.substring(objetoEstabelecimento[1].indexOf("=") + 1);

				Estabelecimento est = new Estabelecimento(id_estabelecimento,
						objetoEstabelecimento[4]
								.substring(objetoEstabelecimento[4]
										.indexOf("=") + 1),
						objetoEstabelecimento[6]
								.substring(objetoEstabelecimento[6]
										.indexOf("=") + 1),
						objetoEstabelecimento[19]
								.substring(objetoEstabelecimento[19]
										.indexOf("=") + 1),
						objetoEstabelecimento[20]
								.substring(objetoEstabelecimento[20]
										.indexOf("=") + 1));
				estabelecimentos.add(est);
			}
			return estabelecimentos;
		} catch (Exception e) {
			e.getMessage();
		}
		return null;

	}

	public static ArrayList<Cliente> listarClientes() {

		ArrayList<Cliente> listaDeClientes = new ArrayList<Cliente>();

		SoapObject resposta = null;

		// Objeto composto pelo NameSpace e pelo mйtodo que queremos chamar
		SoapObject soap = new SoapObject("http://www.outsystems.com",
				"ListCliente");

		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);

		envelope.dotNet = true;
		envelope.implicitTypes = true;
		envelope.setOutputSoapObject(soap);

		String url = "http://flplucio.outsystemscloud.com/PubClubCore/PubClub_Cliente_WS.asmx";

		HttpTransportSE httpTransport = new HttpTransportSE(url);

		try {

			httpTransport.call(
					"http://PubClubCore/PubClub_Cliente_WS/ListCliente",
					envelope);

			resposta = (SoapObject) envelope.getResponse();

			for (int ind = 0; ind < resposta.getPropertyCount(); ind++) {

				SoapObject soapTempObj = (SoapObject) resposta.getProperty(ind);
				Cliente tempCli = new Cliente();
				tempCli.setId_cliente(soapTempObj.getProperty("ClienteId")
						.toString());
				tempCli.setNome(soapTempObj.getProperty("Nome").toString());
				tempCli.setEmail(soapTempObj.getProperty("Email").toString());
				tempCli.setSexo(Boolean.valueOf(soapTempObj.getProperty("Sexo")
						.toString()));
				// qd a data estiver sendo validada, descomentar abaixo e setar
				// o nasc com nascDMY
				// Date nascYMD = new
				// SimpleDateFormat("yyyy-MM-dd").parse(soapTempObj.getProperty("Nascimento").toString());
				// String nascDMY = new
				// SimpleDateFormat("dd-MM-yyyy").format(nascYMD);
				tempCli.setNasc(soapTempObj.getProperty("Nascimento")
						.toString());
				if (!tempCli.getId_cliente().equals(
						Login.clienteLogado.getId_cliente()))
					listaDeClientes.add(tempCli);

			}

		} catch (Exception e) {

			e.printStackTrace();

		}
		return listaDeClientes;

	}

	private ArrayList<Promocao> listarPromocoes() {

		ArrayList<Promocao> listaDePromocoes = new ArrayList<Promocao>();

		SoapObject resposta = null;

		// Objeto composto pelo NameSpace e pelo mйtodo que queremos chamar
		SoapObject soap = new SoapObject("http://www.outsystems.com",
				"SearchPromocao");

		soap.addProperty("SearchKeyWord", " ");

		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);

		envelope.dotNet = true;
		envelope.implicitTypes = true;
		envelope.setOutputSoapObject(soap);

		String url = "http://flplucio.outsystemscloud.com/PubClubCore/PubClub_Promocao_WS.asmx";

		HttpTransportSE httpTransport = new HttpTransportSE(url);

		try {

			httpTransport.call(
					"http://PubClubCore/PubClub_Promocao_WS/SearchPromocao",
					envelope);

			resposta = (SoapObject) envelope.getResponse();

			for (int ind = 0; ind < resposta.getPropertyCount(); ind++) {

				SoapObject soapTempObj = (SoapObject) resposta.getProperty(ind);
				Promocao tempPromo = new Promocao();
				tempPromo.setTitulo(soapTempObj.getProperty("Titulo")
						.toString());
				tempPromo.setDescricao(soapTempObj.getProperty("Descricao")
						.toString());

				listaDePromocoes.add(tempPromo);

			}

		} catch (Exception e) {

			e.printStackTrace();
			;

		}

		return listaDePromocoes;
	}

	public static ArrayList<Amizade> getAmizades(
			int solicitacoesPendentesRecebidasOuEnviadas_Amigos) {

		ArrayList<Amizade> amizades = new ArrayList<Amizade>();

		SoapObject resposta = null;
		String nomeMetodo = null;
		String property = null;

		switch (solicitacoesPendentesRecebidasOuEnviadas_Amigos) {

		case Amigos.SOLICITACOES_PENDENTES_RECEBIDAS:

			nomeMetodo = "SolicitacoesPendentes";
			property = "ClienteId";
			break;

		case Amigos.SOLICITACOES_PENDENTES_ENVIADAS:

			nomeMetodo = "SolicitacoesEnviadasPendentes";
			property = "ClienteId2";
			break;

		case Amigos.AMIGOS:

			nomeMetodo = "MinhasAmizades";
			property = "ClienteId2";
			break;

		}

		// Objeto composto pelo NameSpace e pelo mйtodo que queremos chamar
		SoapObject soap = new SoapObject("http://www.outsystems.com",
				nomeMetodo);

		soap.addProperty("ClienteId",
				Integer.valueOf(Login.clienteLogado.getId_cliente()));

		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);

		envelope.dotNet = true;
		envelope.implicitTypes = true;
		envelope.setOutputSoapObject(soap);

		String url = "http://flplucio.outsystemscloud.com/PubClubCore/PubClub_Social_WS.asmx";

		HttpTransportSE httpTransport = new HttpTransportSE(url);

		try {

			httpTransport.call("http://PubClubCore/PubClub_Social_WS/"
					+ nomeMetodo, envelope);

			resposta = (SoapObject) envelope.getResponse();

			for (int ind = 0; ind < resposta.getPropertyCount(); ind++) {

				SoapObject soapTempObj = (SoapObject) resposta.getProperty(ind);
				Amizade amizade = new Amizade();
				amizade.setId(Integer.valueOf(soapTempObj.getProperty(
						"AmizadeId").toString()));
				amizade.setAmigo(getCliente(Integer.valueOf(soapTempObj
						.getProperty(property).toString())));
				amizade.setStatus(Integer.valueOf(soapTempObj.getProperty(
						"StatusAmizadeId").toString()));
				amizades.add(amizade);
			}

		} catch (Exception e) {

			e.printStackTrace();
		}

		return amizades;

	}

	private static Cliente getCliente(int id) {

		Cliente cliente = new Cliente();

		SoapObject resposta = null;

		SoapObject soap = new SoapObject("http://www.outsystems.com",
				"GetCliente");

		soap.addProperty("ClienteId", id);

		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);

		envelope.dotNet = true;
		envelope.implicitTypes = true;
		envelope.setOutputSoapObject(soap);

		String url = "http://flplucio.outsystemscloud.com/PubClubCore/PubClub_Cliente_WS.asmx";

		HttpTransportSE httpTransport = new HttpTransportSE(url);

		try {

			httpTransport.call(
					"http://PubClubCore/PubClub_Cliente_WS/GetCliente",
					envelope);

			resposta = (SoapObject) envelope.getResponse();

			cliente.setNome(resposta.getProperty("Nome").toString());
			cliente.setId_cliente(resposta.getProperty("ClienteId").toString());
			cliente.setCpf(resposta.getProperty("CPF").toString());
			cliente.setEmail(resposta.getProperty("Email").toString());
			cliente.setSexo(Boolean.valueOf(resposta.getProperty("Sexo")
					.toString()));
			cliente.setNasc(resposta.getProperty("Nascimento").toString());
			cliente.setCep(resposta.getProperty("CEP").toString());
			cliente.setRua(resposta.getProperty("Rua").toString());
			cliente.setNumero(resposta.getProperty("Numero").toString());
			cliente.setBairro(resposta.getProperty("Bairro").toString());
			cliente.setCidade(getCidade(Integer.valueOf(resposta.getProperty("CidadeId").toString())).getLabel());
			cliente.setComplemento(resposta.getProperty("Complemento")
					.toString());

		} catch (Exception e) {

			e.printStackTrace();
		}

		return cliente;

	}

	private String avaliarEstabelecimento(String meuid, String estid,
			String minhanota, String comentario) {
		String retorno;
		// Objeto composto pelo NameSpace e pelo mйtodo que queremos chamar
		SoapObject soap = new SoapObject("http://www.outsystems.com",
				"AvaliarEstabelecimento");

		soap.addProperty("EstabelecimentoId", estid);
		soap.addProperty("ClienteId", meuid);
		soap.addProperty("Nota", minhanota);
		soap.addProperty("Comentario", comentario);

		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);

		envelope.dotNet = true;
		envelope.implicitTypes = true;
		envelope.setOutputSoapObject(soap);

		String url = "http://flplucio.outsystemscloud.com/PubClubCore/PubClub_Avaliacao_WS.asmx";

		HttpTransportSE httpTransport = new HttpTransportSE(url);

		try {

			httpTransport
					.call("http://PubClubCore/PubClub_Avaliacao_WS/AvaliarEstabelecimento",
							envelope);

			Object msg = envelope.getResponse();

			// Variavel responsavel por armazenar a extenзгo do objeto
			// retornado pelo envelope
			int ext = String.valueOf(msg).length();
			// Contador de marcadores retornado pelo envelope
			int contmarc = 0;
			// Contador que serve como base para execultar a captura de
			// caracter
			// em caracter
			int i = 0;

			String menssagem = "";

			while (i < ext) {
				String caracter = String.valueOf(msg).substring(i, i + 1);

				if (caracter.equals("=")) {
					contmarc++;
				}

				if (contmarc == 2) {

					if (!(caracter.equals("="))) {

						if (caracter.equals(";")) {
							break;
						} else {

							menssagem = menssagem + caracter;
						}

					}

				}

				i++;
			}

			retorno = menssagem;

		} catch (Exception e) {
			retorno = e.getMessage();
		}
		return retorno;
	}

	private ArrayList<NotaEstabelecimento> verificarAvaliacao(
			Estabelecimento est) {

		ArrayList<NotaEstabelecimento> objAvaliar = new ArrayList<NotaEstabelecimento>();

		// Objeto composto pelo NameSpace e pelo mÐ¹todo que queremos chamar
		SoapObject soap = new SoapObject("http://www.outsystems.com",
				"GetAvaliacaoByClienteAndEstabelecimentoId");

		// Requisiзгo do web service, solicitaзгo do login e senha
		soap.addProperty("ClienteId", meuID[0]);
		soap.addProperty("EstabelecimentoId", est.id_est);

		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);

		envelope.dotNet = true;
		envelope.implicitTypes = true;
		envelope.setOutputSoapObject(soap);

		String url = "http://flplucio.outsystemscloud.com/PubClubCore/PubClub_Avaliacao_WS.asmx";

		HttpTransportSE httpTransport = new HttpTransportSE(url);

		try {
			// Soap Action, Envelope
			httpTransport
					.call("http://PubClubCore/PubClub_Avaliacao_WS/GetAvaliacaoByClienteAndEstabelecimentoId",
							envelope);

			Object msg = envelope.getResponse();

			String resultado = msg.toString().replace(
					"anyType{ObjetoAvaliacao=anyType{", "anyType");
			Log.d("Resultado", resultado);

			String[] resultLista = resultado.split("anyType");
			for (int vI = 1; vI < resultLista.length; vI++) {
				String[] objetoRetornoAvaliacao = resultLista[vI].split(";");

				NotaEstabelecimento notaList = new NotaEstabelecimento(
						objetoRetornoAvaliacao[0].substring(objetoRetornoAvaliacao[0]
								.indexOf("=") + 1),
						objetoRetornoAvaliacao[1]
								.substring(objetoRetornoAvaliacao[1]
										.indexOf("=") + 1),
						objetoRetornoAvaliacao[2]
								.substring(objetoRetornoAvaliacao[2]
										.indexOf("=") + 1),
						objetoRetornoAvaliacao[3]
								.substring(objetoRetornoAvaliacao[3]
										.indexOf("=") + 1),
						objetoRetornoAvaliacao[4]
								.substring(objetoRetornoAvaliacao[4]
										.indexOf("=") + 1));

				if (objetoRetornoAvaliacao[4].substring(
						objetoRetornoAvaliacao[4].indexOf("=") + 1)
						.equals(null)) {
					objetoRetornoAvaliacao[4] = "Sem Comentarios";
				}

				objAvaliar.add(notaList);
			}
			return objAvaliar;
		} catch (Exception e) {
			e.getMessage();
			return null;

		}

	}

	private static Cidade getCidade(int cidadeId) {

		Cidade cidade = new Cidade();

		SoapObject resposta = null;

		SoapObject soap = new SoapObject("http://www.outsystems.com",
				"Get_Cidade");

		soap.addProperty("CidadeId", cidadeId);

		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);

		envelope.dotNet = true;
		envelope.implicitTypes = true;
		envelope.setOutputSoapObject(soap);

		String url = "http://flplucio.outsystemscloud.com/pubclubcore/Utilizadades_WS.asmx";

		HttpTransportSE httpTransport = new HttpTransportSE(url);

		try {

			httpTransport.call("http://PubClubCore/Utilizadades_WS/Get_Cidade",
					envelope);

			resposta = (SoapObject) envelope.getResponse();

			cidade.setId(Integer.valueOf(resposta.getProperty("Id").toString()));
			cidade.setLabel(resposta.getProperty("Label").toString());
			cidade.setUf(getUf(Integer.valueOf(resposta.getProperty("UF_Id")
					.toString())));

		} catch (Exception e) {

			e.printStackTrace();
		}

		return cidade;
	}

	private static UF getUf(int ufId) {
		// TODO Auto-generated method stub
		UF uf = new UF(); 
		SoapObject resposta = null;

		SoapObject soap = new SoapObject("http://www.outsystems.com",
				"Get_UF");

		soap.addProperty("UFId", ufId);

		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);

		envelope.dotNet = true;
		envelope.implicitTypes = true;
		envelope.setOutputSoapObject(soap);

		String url = "http://flplucio.outsystemscloud.com/pubclubcore/Utilizadades_WS.asmx";

		HttpTransportSE httpTransport = new HttpTransportSE(url);

		try {

			httpTransport.call("http://PubClubCore/Utilizadades_WS/Get_UF",
					envelope);

			resposta = (SoapObject) envelope.getResponse();

			uf.setId(Integer.valueOf(resposta.getProperty("Id").toString()));
			uf.setLabel(resposta.getProperty("Label").toString());
			uf.setNome(resposta.getProperty("Nome").toString());
			uf.setActive(Boolean.valueOf(resposta.getProperty("Is_Active").toString()));
			uf.setOrdem(Integer.valueOf(resposta.getProperty("Order").toString()));

		} catch (Exception e) {

			e.printStackTrace();
		}

		return uf;
		
		
	}

}
